 1.NM配置
   
   1).可用内存
   刨除分配给操作系统、其他服务的内存外，剩余的资源应尽量分配给YARN。
   默认情况下，Map或Reduce container会使用1个虚拟CPU内核和1024MB内存，ApplicationMaster使用1536MB内存。
   yarn.nodemanager.resource.memory-mb 默认是8192
   2).CPU虚拟核数
   建议将此配置设定在逻辑核数的1.5～2 倍之间。如果CPU的计算能力要求不高，可以配置为2倍的逻辑CPU。
   yarn.nodemanager.resource.cpu-vcores
   该节点上YARN可使用的虚拟CPU个数，默认是8。
   目前推荐将该值设值为逻辑CPU核数的1.5～2 倍之间。
 
 2.Container启动模式
   
   YARN的NodeManager提供2种Container的启动模式。
   默认，YARN为每一个Container启动一个JVM，JVM进程间不能实现资源共享，导致资源本地化的时间开销较大。针
对启动时间较长的问题，新增了基于线程资源本地化启动模式，能够有效提升container启动效率。
   yarn.nodemanager.container-executor.class
   设置为“org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor”，则每次启动container将会
启动一个线程来实现资源本地化。
   该模式下，启动时间较短，但无法做到资源（CPU、内存）隔离。
   设置为“org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor” ，则每次启动container都会
启动一个JVM进程来实现资源本地化。
   该模式下，启动时间较长，但可以提供较好的资源（CPU、内存）隔离能力。
 
 3.AM调优
   
   运行的一个大任务，map总数达到了上万的规模，任务失败，发现是ApplicationMaster(以下简称AM)反应缓慢，
最终超时失败。
   失败原因是Task数量变多时，AM管理的对象也线性增长，因此就需要更多的内存来管理。AM默认分配的内存大小
是1.5GB。
   建议:任务数量多时增大AM内存  
   yarn.app.mapreduce.am.resource.mb